Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. Software applications often use multiple different processes and/or threads to perform tasks. These threads and processes are also configured to communicate with each other. Such communication often occurs through the use of a message queue. Message queues are typically managed by queue managers. Generally, queue mangers are configured to deliver messages on the queue and dispose of messages that have been successfully read from the queue. In this manner, the queue is kept up-to-date, even while the queue is constantly changing. Queue managers may also be configured to deliver messages between queues hosted by other queue managers.
Typically, queue managers include a set of commands or semantics that can be used by outside applications to access features of the queue manager. For example, a queue manager may include a receive-message command that accesses and returns a message from the head of the queue. Many other such commands may be included in the queue manager's set of available commands. These commands, however, are generally hard-coded into the queue manager application, and, as a result, updating or adding to the set of available commands may involve a great deal of modification to the queue manager application.